Spring boot之事务传播

背景

Spring在TransactionDefinition接口中规定了7种类型的事务传播行为。事务传播行为是Spring框架独有的事务增强特性,他不属于的事务实际提供方数据库行为,这是Spring为我们提供的强大工具箱。使用事务传播可以为我们开发提供许多便利。但是人们对他的误解也很多,你一定听过“service方法事务最好不要嵌套”的传言。要想正确使用工具首先需要了解工具。

基础概念

什么是事务传播行为

事务传播行为用来描述由某一个事务传播行为修饰的方法被嵌套进另外一个方法时事务如何传播。
伪代码说明:

1
2
3
4
5
6
7
8
9
public void methodA(){
methodB();
//doSomething
}

@Transaction(Propagation == XX)
public void methodB(){
//doSomething
}

代码中methodA()方法嵌套调用了methodB()方法,methodB()的事务传播行为由@Transaction()设置来决定。